#ifndef DDLCREATOR_H
#define DDLCREATOR_H

#include "../global/xnamespace.h"

#include <QFile>
#include <QSqlDatabase>

X_BEGIN_NAMESPACE

// SQLTIE数据库管理器，提供简单的数据库操作，初始化，升级，查询等。
class DbManager : public QObject
{
    Q_OBJECT

public:
    static DbManager &instance();
    static QString dbFile(const QString bareJid);
    static QString schemaInitFile();
    static QString schemaUpdateFile();

    bool prepareData(const QString& bareJid);
    void closeDataBase();

    QSqlQuery createQuery();
    QSqlQuery createQuery(const QString& sql);

private:
    DbManager(QObject *parent = 0);

    static DbManager *createInstance();

private:
    static const char DB_FILE[];
    static const char SCHEMA_INIT_FILE[];
    static const char SCHEMA_UPDATE_FILE[];

    bool checkDataFile(const QString &fileName);
    bool openDatabase(const QString &fileName);

    bool initDatabase(const QString& dbFileName);
    bool updateDatabase();

private:
    QSqlDatabase m_db;
    void executeQueriesFromFile(QFile &file, QSqlQuery &query);
};

X_END_NAMESPACE

#endif // DDLCREATOR_H
